Most microcontrollers incorporate analog to digital (A/D) converters with 8-10 bits of resolution, which is not sufficient resolution for certain applications. Typical alternatives require significant additional circuitry to achieve higher resolution or the use of extra microcontroller resources beyond the built-in A/D converter. The simplest solution to this problem is to use a high-resolution A/D converter separate from the microcontroller. This adds complexity (e.g. requires a data bus) and cost to a circuit.
Another common method used to attempt to address this problem is to sample the signal many times with the A/D converter and average the results. In practice, however, because a signal that is in between two adjacent A/D converter resolution steps will be measured as either one or the other, it is only when the signal is almost exactly between steps that an intermediate value will result from this over-sampling method. This method therefore fails to adequately resolve small changes in the signal.
Another method is to implement a circuit that generates a voltage ramp. The ramp is then fed into one half of a comparator input on the microcontroller and the signal being measured is fed into the other half of the comparator input. By knowing the shape of the ramp and measuring the time from the start of the ramp to when the comparator output changes, a higher resolution measurement can be achieved. The maximum achievable resolution with this method depends on the precision of the microcontroller timers and the period of the ramp. This method does not have a significant impact on circuit cost, but uses substantially more microcontroller resources (extra ports, a timer, etc.) and can increase conversion times.